package cn.honqun.tinycms.service;

import cn.honqun.tinycms.domain.entity.FileObject;
import org.springframework.web.multipart.MultipartFile;

import java.io.OutputStream;
import java.util.List;

/**
 * 文件对象服务
 */
public interface FileObjectService {
    /**
     * 创建一个文件对象，实现者需要保存文件，并且存储数据
     */
    FileObject create(MultipartFile file);

    /**
     * 根据URL删除
     */
    void remove(String url);

    /**
     * 根据URL查询
     */
    FileObject selectByURL(String url);

    /**
     * 根据URI查询
     */
    FileObject selectByURI(String uri);

    /**
     * 根据URL读取文件
     */
    void read(String url, OutputStream out);

    /**
     * 关联一个文件到目标对象
     */
    void attach(String url, Long targetId);

    /**
     * 解除关联
     */
    void detach(String url);

    /**
     * 根据目标对象ID，查询所有关联文件
     */
    List<FileObject> selectByTarget(Long targetId);

}
